package com.huaxin.hxmodulesystem.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.huaxin.hxmodulesystem.dto.ResponseResult;
import com.huaxin.hxmodulesystem.dto.request.AddFamilyReqDTO;
import com.huaxin.hxmodulesystem.dto.request.UpdateFamilyReqDTO;
import com.huaxin.hxmodulesystem.dto.response.GetFamilyListRespDTO;
import com.huaxin.hxmodulesystem.models.Family;

public interface FamilyService extends IService<Family> {
    /**
     * 添加家庭
     *
     * @param in
     * @return
     */
    ResponseResult<String> addFamily(AddFamilyReqDTO in);

    /**
     * 修改家庭
     *
     * @param in
     * @return
     */
    ResponseResult<String> updateFamily(UpdateFamilyReqDTO in);

    /**
     * 删除家庭
     *
     * @param id
     * @return
     */
    ResponseResult<String> deleteFamily(String id);

    /**
     * 获取家庭的成员列表
     *
     * @param userId 用户ID
     * @return
     */
    ResponseResult<GetFamilyListRespDTO> getFamilyTheUserList(String userId);

    /**
     * 获取家庭列表
     *
     * @param pageNum
     * @param pageSize
     * @param name
     * @return
     */
    ResponseResult<Page<Family>> getFamilyList(Integer pageNum, Integer pageSize, String name);

    /**
     * 添加家庭成员
     *
     * @param userId
     * @param familyId
     * @return
     */
    ResponseResult<String> addFamilyMember(String userId, String familyId);

    /**
     * 移除家庭成员
     *
     * @param userId
     * @param familyId
     * @return
     */
    ResponseResult<String> removeFamilyMember(String userId, String familyId);

    /**
     * 获取家庭信息
     *
     * @param familyId 主键id
     * @return
     */
    ResponseResult<Family> getFamilyById(String familyId);
}
